1. The Field of the Invention
The present invention relates to systems and methods for transferring data between a transport layer and a link layer in a computer system. More specifically, the present invention relates to systems and methods for transmitting bulk data partitioned into a plurality of packets between a transport layer and a link layer using a singular command therebetween.
2. The Relevant Technology
Today, computers are becoming a main staple for information exchange in the modern society. Computers, namely personal computers (PC), provide the source and termination points for a majority of information exchange. A user at a PC may input information and quickly transmit such information to another user at a destination computer in a fraction of a second. The logistics of such transfers originated from simple origins such as directly coupled or connected computers. However, today, computers are not directly coupled in a one-to-one corresponding configuration, but frequently exist in a network environment wherein multiple computers are interconnected one with another.
In computer networks wherein interconnections are not dedicated and isolated, information or data targeted for one computer must be addressed for receipt by a designated computer. Furthermore, information traveling from a source computer to a destination computer, in most networks, travels over a shared network link. To facilitate the transfer and management of significant amounts of data across communication or computer networks, the partitioning of data into useable packets has become necessary to facilitate multiusers on a shared network resource.
In addition to partitioning data into smaller components or packets, network transfer software facilitating the exchange of data between computers has also been partitioned into identifiable components. Standardized components or structures conforming to the OSI protocol model have been promulgated for many years. Although many systems do not incorporate each and every level of the OSI standardized model, the majority of network systems incorporate fundamental components of the OSI model. For example, the transport layer of the OSI model facilitates the aforementioned partitioning or packetizing of bulk data into useable, convenient packet formats for dispatching throughout the computer network. Some transport layers have become preeminently dominant in the computer networking arena. For example, TCP/IP, although taking on minor and major variations, has become a standard transport protocol for use in implementing the transport layer of the OSI model for computer networking. Additionally, IPX and NetBEUI have also become standard transport protocols in computer networks. Such transport protocols are implemented in an OS or network protocol stack by programming a transport protocol driver capable of receiving bulk data and transforming such bulk data into packetized and formatted data capable of efficient propagation through a computer network.
FIG. 1 represents a prior art configuration of a network protocol stack or configuration 100 capable of transporting bulk data 102 between a computer and network 164. As described above, transport layer or driver 104 receives bulk data 102 and partitions bulk data 102 into packets properly sized and formatted for propagation in network 164. In FIG. 1, transport driver 104 partitions bulk data 102 into packets 106, 108 and 110 and applies formats accordingly. Generally, rather than directly transporting or forwarding data through subsequent layers or levels, pointers to the data packets are generated. Pointer 112, 114 and 116, provide accessibility to the packetized data and are individually passed to other layers as opposed to replicating or copying entire data packets upon issuance of a transfer command.
As described above, a transport driver interfaces with other software components supporting the functionality of other OSI layers. To facilitate the compatibility of various layers, an interface 120 defines a neutral specification for the development of operative layers or drivers. Transport driver 104 incorporates an interface 118 compliant with interface 120 through which packetized information may be exchanged.
A link layer device driver 124 provides link layer functionality which generally comprises preparing and presenting data in a particular form and location in preparation for transmission and reception by hardware such as physical device 130 interfaced to network 164. Similar to transport driver 104, link layer device driver 124 provides a compatible interface 128 for compliant communication therebetween.
Communication flow of bulk data 102 to network 164 will now be discussed. Transport layer 104 receives bulk data 102 from yet a higher layer in the OSI module, typically an application layer. As discussed above, transmission of bulk data 102 in raw format across network 164 is prohibitive due to several factors such as (i) interference noise present in network 164 which destroys or degrades a portion of bulk data 102, thus requiring a retransmission of the entire bulk data, (ii) the shared nature of network 164 with other computers requiring time-multiplexing, and (iii) other practicalities of successful transmission of a substantial amount of data in a single transmit session. In a modern system, bulk data 102 is partitioned into, among others, data packet 106 having a pointer 112. Transport driver 104 dispatches a send packet request 122 comprised of pointer 112 transmitted via interface 120 through send packet request 126 to link layer device driver 124. Link layer device driver 124 then issues a request 132 to physical device 130 thereby notifying physical device 130 of the presence of data packet 106 for dispatch through network 164.
Traditional network protocol stacks typically employ dedicated buffers within system resources such as RAM that are accessible both to a computer microprocessor and physical device 130. In such configurations, link layer device driver 124 upon receiving pointer 112 may copy data packet 106 into the predefined buffer known and accessible to physical device 130.
Physical device 130, upon receipt of request 132, performs an autonomous transfer of data packet 106 into network 164. Physical device 130 generally is comprised of embedded control facilitating the extraction of data packets from common memory resources. Physical device 130 in a response 134 notifies link layer device driver 124 of the completion of the transfer of data packet 106 to network 164. Response 134, although depicted as a direct communication with link layer device driver 124 is commonly carried out with physical device 130 initiating an interrupt through the microprocessor of the computer system followed by the servicing of an interrupt service routine directed to link layer device driver 124. Link layer device driver 124 issues a send packet response 136 to interface 120 which in turn reissues or simply forwards send packet response 138 to transport driver 104. The transformation of send packet response 136 to send packet response 138 depends upon the level of functionality of interface 120.
Upon receipt of send packet response 138, transport driver 104 then initiates the transfer of packet 108 and packet 110 in sequential order by employing the processes utilized by packet 106 such as initiation of send packet requests 140 and 152, and receipt of send packet response 150 and 162. It should be noted that packets individually traverse the network protocol stack before the initiation of a subsequent traversal by a subsequent data packet. Furthermore, the successful transfer of a data packet by physical device 130 to network 164 results in a specific acknowledgement or response for each packet transferred. As discussed earlier, such responses typically take the form of an interrupt to the microprocessor which causes the microprocessor to postpone its present operations in favor of servicing an individual response. It should be evident that as bulk data 102 increases in size and the number of data packets increases, the delivery of sizeable bulk data results in a significant impairment of microprocessor performance. Furthermore, modern communication networks facilitating the transfer of high bandwidth data, such as imaging data, are required to devote a significant amount of microprocessor resources to the manipulation of such data. When undesirable intermittent interruptions become pervasive, performance degrades to undesirable or intolerable levels.
It would represent an advancement over the prior art to provide a method and system for sending a plurality of data packets from a transport driver to a link layer device driver without transmitting an individual command for each data packet. It would, therefore, represent an advancement in the art to provide the ability to minimize the quantity of interruptions to the microprocessor during the transmission of bulk data to a network. It would also represent an advancement in the art to minimize the amount of handshaking carried out between layers within the OSI stack. It would yet represent an advancement in the art to provide a method and system for receiving a plurality of data packets from a network and forwarding the plurality of data packets to a transport driver without being required to issue individual transfer commands for each packet.